package com.xiangge.oop;

import com.xiangge.domain.Student;

/*
    6.static关键字:
        定义： static是静态
        引入：
        四个特点：
            1. 被static修饰的成员被所有对象所共享
            2. 被static修饰的成员属于类不属于对象
            3. 被static修饰的成员可以使用类名直接调用
            4. 被static修饰的成员随着类的加载而加载优先于对象被

        static关键字的使用：
             -- 修饰变量：   类变量
                 使用场景： 一般情况下：  public static final 修饰类变量
             -- 修饰方法：
                  静态方法只能访问静态成员, 不能访问非静态成员
                  为什么？   因为静态方法随着类的加载而加载,优先于对象加载，此时对象在内存中还没有创建，对象的成员在内存中不存在所以不能访问
                 注意事项： 静态方法中不能有this
             -- 修饰代码块：
*/
public  class OopDemo2 {
   /* public static final String COMPANY = "祥哥";

    public static void main(String[] args) {
        System.out.println(OopDemo2.COMPANY);
        // 100个学生
        Student stu1 = new Student("迪丽热巴", 20, "新疆大学");
        Student stu2 = new Student("古力娜扎", 18, "北京电影学院");
        Student stu3 = new Student("马儿扎哈", 100, "战争学院");

        // 三个学生来了软帝
//        stu1.school = "软帝学院";
//        stu2.school = "软帝学院";
//        stu3.school = "软帝学院";
        // stu3.school = "软帝学院";
        Student.school = "软帝学院";
        // 调用show()
        stu1.show();
        stu2.show();
        stu3.show();
    }*/
}
// 静态测试类
class StaticTest{
    public int num1 = 10;
    public static int num2 = 100;
    public void method(){
        System.out.println("非静态的....method()");
    }
    public static void staticMethod(){
        System.out.println("静态的....staticMethod()");
    }
    // 非静态测试方法
    public void test1(){
        System.out.println(num1); // 10
        System.out.println(num2); // 20

        method(); // 非静态的....method()
        staticMethod(); // 静态的....staticMethod()
    }

    // 静态测试方法
    public static void test2(){
//        System.out.println(num1);
//        System.out.println(num2);
//        method();
//        staticMethod();
        // System.out.println(this.num1);
    }

    public static void main(String[] args) {
        new StaticTest().test1();
    }

}
